home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 2
/
Gekikoh Dennoh Club Vol. 2 (Japan).7z
/
Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin
/
tools
/
ldbmp08
/
ldbmp08s.lzh
/
LDBMP16.S
< prev
next >
Wrap
Text File
|
1997-09-28
|
2KB
|
123 lines
*****************************************************************
* 32k色のBMP(Win95 卒業II用) *
*****************************************************************
.include doscall.mac
.include iocscall.mac
.include myconst.h
.xdef _Bit16_conv
.xref gr_addr
.xref tate
.xref yoko
.xref line_byte
.xref nflg
.text
.even
_Bit16_conv:
bsr irohen16
tst.b nflg
beq _Bit16_conv_
bsr hanten
_Bit16_conv_:
rts
irohen16:
movea.l gr_addr(pc),a0 *変換元
movea.w line_byte(pc),a3
move.w yoko(pc),d0 *変換数
move.w tate(pc),d1
move.w #%0000_0000_0111_1100,d5
move.w #%1110_0000_0000_0011,d6
move.w #%0001_1111_0000_0000,d7
subq.w #1,d0
movea.w d0,a2
subq.w #1,d1
irohen16_1:
move.l a2,d0
movea.l a0,a1
irohen16_2:
move.w (a1),d2
move.w d2,d3
move.w d2,d4
and.w d5,d2 *R
and.w d6,d3 *G
and.w d7,d4 *B
rol.w #4,d2
ror.w #2,d3
ror.w #7,d4
or.w d3,d2 *RGB ->GRB
or.w d4,d2
move.w d2,(a1)+
dbra.w d0,irohen16_2
adda.l a3,a0
dbra.w d1,irohen16_1
rts
hanten:
movea.l gr_addr(pc),a0 *転送元1
move.w tate(pc),d0 *転送元2 (tate-1)*line_byte
subq.w #1,d0
mulu.w line_byte(pc),d0
movea.l a0,a2
adda.l d0,a2
moveq.l #0,d1 *1ライン上への差分 line_byte
move.w line_byte(pc),d1
move.w tate(pc),d2 *縦ループ数 tate/2-1
lsr.w #1,d2
subq.w #1,d2
move.w yoko(pc),d4
btst.l #0,d4
beq hanten7 *横ライン=偶数
hanten4: *横ライン=奇数
lsr.w #1,d4
subq.w #1,d4
hanten5:
move.w d4,d3
movea.l a0,a1
movea.l a2,a3
hanten6:
move.l (a1),d0
move.l (a3),(a1)+
move.l d0,(a3)+
dbra.w d3,hanten6
move.w (a1),d0
move.w (a3),(a1)+
move.w d0,(a3)+
adda.l d1,a0
suba.l d1,a2
dbra.w d2,hanten5
rts
hanten7: *横ライン=偶数
lsr.w #1,d4
subq.w #1,d4
hanten8:
move.w d4,d3
movea.l a0,a1
movea.l a2,a3
hanten9:
move.l (a1),d0
move.l (a3),(a1)+
move.l d0,(a3)+
dbra.w d3,hanten9
adda.l d1,a0
suba.l d1,a2
dbra.w d2,hanten8
rts